package main

type Stu struct {
	name    string
	age     int
	address string
}

func main() {
	// map1 := make(map[int]int)
	// map1[1] = 90
	// map1[2] = 88
	// map1[10] = 1
	// map1[20] = 2
	// fmt.Println(map1)
	// modifyMap(map1)
	// fmt.Println(map1)

	//map的value经常用struct类型 更适合管理复杂的数据
	//例map的key为学生的学号，是惟一的
	//map的value是结构体，包含学生的姓名、年龄、地址等信息
	// students := make(map[string]Stu, 10)
	// stu1 := Stu{"tom", 18, "苏州"}
	// stu2 := Stu{"Jerry", 20, "北京"}
	// students["no1"] = stu1
	// students["no2"] = stu2
	// fmt.Println(students)
	//遍历学生信息，两个元素是无序的
	// for k, v := range students {
	// 	fmt.Printf("学生编号=%v\n", k)
	// 	fmt.Printf("学生姓名=%v\n", v.name)
	// 	fmt.Printf("学生年龄=%v\n", v.age)
	// 	fmt.Printf("学生地址=%v\n", v.address)
	// 	fmt.Println()
	// }
}

//map是引用类型，遵守引用类型传递的机制，在一个函数接受map后进行修改，会直接改掉原来的map
// func modifyMap(map1 map[int]int) {
// panic("unimplemented")
// map1[10] = 1000

//map会自动扩容
// map1[30] = 1000
// }
